package com.shujia.java.day20.demo4;

import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;

/**
* @Description: TCPServerSocket 服务器
* @Author: 王火火
* @Date: 2019/8/23 14:08
 *
 * 为什么接收端和服务器端 只需要一个端口号就行了?????
 *        他们是被动的等待别人来建立连接 或者直接发送数据，所以直接监听当前的端口号就可以了
 *
 * 创建ServerSocket
 * 接收数据 返回Socket
 * 通过Socket创建输入流
 * 读取数据
 * 关闭
 *
 * 接收数据之后返回
 *      使用TCP的话 就不需要在创建连接了
 *      直接Socket对象调用getInputStream和getOutputStream
 *
 *       之前的UDP需要在创建连接来实现 数据的来回传输
 *
*/
public class TCPServerSocket {
    public static void main(String[] args) throws Exception{
        //创建服务器 建立连接
        ServerSocket serverSocket = new ServerSocket(9000);
        //接收数据 返回值Socket
        Socket socket = serverSocket.accept();
        //创建输入流
        InputStream is = socket.getInputStream();
        byte[] b =new byte[1024];
        int len=is.read(b,0,b.length);
        System.out.println("服务器接受的数据为:"+new String(b,0,len));

        //返回数据
        OutputStream os = socket.getOutputStream();
        byte[] b1="我接收到数据了".getBytes();
        os.write(b1,0,b1.length);
        System.out.println("客户端发送的数据为:"+new String(b1,0,b1.length));

    }
}
